public class ServicioXXX implements IServicioTablasApoyo {
	
	XXXDAO yyyDAO;
	
	UtilValidacion utilValidacion = new UtilValidacion();

	 public Object consultar(Object o) throws GeneralException {
		Object yyy = null;
		XXXId objXXX = (XXXId) o;
		if (o == null || objXXX.getCiaopr() == null
				|| objXXX.getCiaopr().trim().equals("")
				|| objXXX.getXXXcod() == null
				|| objXXX.getXXXcod().trim().equals("")) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.consulta.pkNull");
		}
		try {
			yyy = yyyDAO.findById(objXXX);
		} catch (org.springframework.dao.DataAccessResourceFailureException e) {
			if (e.getMostSpecificCause() instanceof org.hibernate.exception.JDBCConnectionException) {
				throw new GeneralException("persona.tablaApoyo.yyy.conexion");
			}
			throw new GeneralException(
					"persona.tablaApoyo.yyy.consulta.error");

		} catch (Exception e) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.consulta.desconocido");
		}
		if (yyy == null) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.consulta.consultaVacia");
		}
		return yyy;

	}

	public List consultarTodos(Object o) throws GeneralException {
		List list = null;

		if (o == null) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.consulta.todos.pkNull");
		}
		try {
			list = yyyDAO.findByProperty("id.ciaopr", o);
		} catch (org.springframework.dao.DataAccessResourceFailureException e) {
			if (e.getMostSpecificCause() instanceof org.hibernate.exception.JDBCConnectionException) {
				throw new GeneralException("persona.tablaApoyo.yyy.conexion");
			}
			throw new GeneralException(
					"persona.tablaApoyo.yyy.consulta.todos.error");
		} catch (org.springframework.dao.DataAccessException e) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.consulta.todos.error");
		} catch (Exception e) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.consulta.todos.desconocido");
		}
		if (list.size() == 0) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.consulta.todos.consultavacia");
		}

		return list;
	}

	public void eliminar(Object o) throws GeneralException {

		XXX objXXX = (XXX) o;
		if (objXXX == null || objXXX.getId().getCiaopr() == null
				|| objXXX.getId().getCiaopr().trim().equals("")
				|| objXXX.getId().getXXXcod() == null
				|| objXXX.getId().getXXXcod().trim().equals("")) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.eliminar.pkNull");
		}
		try {
			yyyDAO.delete(objXXX);
		} catch (org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException e) {
			if (e.getMostSpecificCause() instanceof org.hibernate.StaleStateException) {
				throw new GeneralException(
						"persona.tablaApoyo.yyy.eliminar.pkInvalida");
			}
			throw new GeneralException(
					"persona.tablaApoyo.yyy.eliminar.error");

		} catch (org.springframework.dao.DataAccessResourceFailureException e) {
			if (e.getMostSpecificCause() instanceof org.hibernate.exception.JDBCConnectionException) {
				throw new GeneralException(
						"persona.tablaApoyo.yyy.eliminar.conexion");
			}
			throw new GeneralException(
					"persona.tablaApoyo.yyy.eliminar.error");
		} catch (org.springframework.dao.DataAccessException e) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.eliminar.error");
		} catch (Exception e) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.eliminar.desconocido");
		}
	}

	public void incluir(Object o) throws GeneralException {

		XXX objXXX = (XXX) o;
		if (objXXX == null || objXXX.getId().getCiaopr() == null
				|| objXXX.getId().getCiaopr().trim().equals("")
				|| objXXX.getId().getXXXcod() == null
				|| objXXX.getId().getXXXcod().trim().equals("")
				|| objXXX.getXXXnombre() == null
				|| objXXX.getXXXnombre().trim().equals("")) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.incluir.pkNull");
		} else if (objXXX.getValorpordefecto() == null
				|| objXXX.getValorpordefecto().trim().equals("")) {
			objXXX.setValorpordefecto("N");
		}

		try {
			utilValidacion.verCambiaPorDefecto(o, XXXDAO);
			yyyDAO.save(objXXX);
		} catch (org.springframework.dao.DataIntegrityViolationException e) {
			if (e.getMostSpecificCause() instanceof org.hibernate.PropertyValueException) {
				throw new GeneralException(
						"persona.tablaApoyo.yyy.incluir.datoRequerido.vacio");
			} else if (e.getMostSpecificCause() instanceof ConstraintViolationException) {
				throw new GeneralException(
						"persona.tablaApoyo.yyy.incluir.registroDuplicado");
			}
			throw new GeneralException("persona.tablaApoyo.yyy.incluir.error");

		} catch (org.springframework.dao.DataAccessResourceFailureException e) {
			if (e.getMostSpecificCause() instanceof org.hibernate.exception.JDBCConnectionException) {
				throw new GeneralException(
						"persona.tablaApoyo.yyy.incluir.conexion");
			}
			throw new GeneralException("persona.tablaApoyo.yyy.incluir.error");
		} catch (Exception e) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.incluir.desconocido");
		}
	}

	public void modificar(Object o) throws GeneralException {

		XXX objXXX = (XXX) o;
		if (objXXX == null || objXXX.getId().getCiaopr() == null
				|| objXXX.getId().getCiaopr().trim().equals("")
				|| objXXX.getId().getXXXcod() == null
				|| objXXX.getId().getXXXcod().trim().equals("")
				|| objXXX.getXXXnombre() == null
				|| objXXX.getXXXnombre().trim().equals("")) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.modificar.pkNull");
		} else if (objXXX.getValorpordefecto() == null
				|| objXXX.getValorpordefecto().trim().equals("")) {
			objXXX.setValorpordefecto("N");
		}
		try {
			yyyDAO.attachDirty(objXXX);
		} catch (org.springframework.dao.DataIntegrityViolationException e) {
			if (e.getMostSpecificCause() instanceof org.hibernate.PropertyValueException) {
				throw new GeneralException(
						"persona.tablaApoyo.yyy.modificar.datoRequerido.vacio");
			} else if (e.getMostSpecificCause() instanceof ConstraintViolationException) {
				throw new GeneralException(
						"persona.tablaApoyo.yyy.modificar.registroDuplicado");
			}
			throw new GeneralException(
					"persona.tablaApoyo.yyy.modificar.error");
		} catch (org.springframework.dao.DataAccessResourceFailureException e) {
			if (e.getMostSpecificCause() instanceof org.hibernate.exception.JDBCConnectionException) {
				throw new GeneralException(
						"persona.tablaApoyo.yyy.modificar.conexion");
			}
			throw new GeneralException(
					"persona.tablaApoyo.yyy.modificar.error");
		} catch (Exception e) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.modificar.desconocido");
		}
		
	}

	public XXXDAO getXXXDAO() {
		return yyyDAO;
	}

	public void setXXXDAO(XXXDAO yyyDAO) {
		this.yyyDAO = yyyDAO;
	}

	public List buscarCatalogoPorPropiedad(String atributo, String valor)
			throws GeneralException {

	List list = null;
		if (atributo == null || valor == null || atributo.equals("")
				|| valor.equals("")) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.buscarCatalogoPorPropiedad.parametrosInvalidos");
		}
		try {
			list = this.yyyDAO.buscarPorPropiedad(atributo, valor);
			if (list.size() == 0) {
				throw new GeneralException(
						"persona.tablaApoyo.yyy.buscarCatalogoPorPropiedad.consultaVacia");
			}

		} catch (org.springframework.dao.DataAccessResourceFailureException e) {
			if (e.getMostSpecificCause() instanceof org.hibernate.exception.JDBCConnectionException) {
				throw new GeneralException("persona.tablaApoyo.yyy.conexion");
			}
			throw new GeneralException(
					"persona.tablaApoyo.yyy.buscarCatalogoPorPropiedad.error");
		} catch (org.springframework.dao.DataAccessException e) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.buscarCatalogoPorPropiedad.error");
		} catch (Exception e) {
			throw new GeneralException(
					"persona.tablaApoyo.yyy.buscarCatalogoPorPropiedad.desconocido");
		}

		return list;
	}


	public Object obtenerDTOInicianlizado() throws GeneralException {
		return new XXX();
	}
}